var blob: Blob = new (<any>Blob)(['<!doctype html>\n', document.documentElement.outerHTML], { type: 'application/octet-stream' }); for (var i = 0; i < value.length; i++) { var cc = value.charCodeAt(i);
passableOnly = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z' || c === '_' || c === '-');
return 'n-' + codes.join('-'); export function decodeFromAttributeName(attributeNamePart: string): string { if (attributeNamePart.slice(0, 2) === 's-')
return attributeNamePart.slice(2);
var codes = attributeNamePart.slice(2).split('-'); var result: string[] = [];
for (var i = 0; i < codes.length; i++) { result[i] = String.fromCharCode(parseInt(codes[i]));
console.log('Parsing attribute name error: ' + attributeNamePart + ' has non-numeric chunk ' + i + ' (' + codes[i] + ').'); export function startsWith(str: string, prefix: string) { if (!str) return !prefix;
if (!prefix) return false;
if (str.length < prefix.length) return false;
if (str.charCodeAt(0) !== prefix.charCodeAt(0)) return false;
if (str.slice(0, prefix.length) !== prefix) return false;
export function dateNow(): number { return new Date().valueOf();
export var objectKeys = (obj: any): string[] => { if (typeof Object.keys === 'function')
objectKeys = Object.keys;
objectKeys = (obj: any): string[] => { var result: string[] = [];
for (var k in obj) if (obj.hasOwnProperty(k)) {